
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>7、IO - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>7、IO - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">什么是I/O操作？它包含哪两个方面？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">I/O指的是输入（Input）和输出（Output），是计算机与外部世界进行信息交互的方式。输入是指从外部获取数据，例如从键盘、鼠标或磁盘文件中读取；输出是指向外部传送数据，例如在显示器上显示文字或将数据写入磁盘。</div>
          </div>
          <div class="card-source">来源: 什么是I/O操作？</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">请解释同步I/O和异步I/O的核心区别，并结合文档中的比喻进行说明。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">核心区别在于是否阻塞。同步I/O是阻塞方式，程序必须等待I/O操作完成后才能继续执行，就像“等待电梯时必须一直站在那里直到电梯来了”。而异步I/O是非阻塞方式，程序可以在I/O操作进行的同时执行其他任务，就像“按下电梯按钮后，可以继续做其他事情”。</div>
          </div>
          <div class="card-source">来源: I/O操作的基本方式</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">为什么计算机系统需要I/O操作？请列举其三个主要作用。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">计算机需要I/O操作主要有三个作用：1. 数据交互：实现计算机与外部设备、文件系统等进行信息输入和输出。2. 持久化存储：通过将数据写入硬盘等设备，实现数据的永久保存。3. 用户交互：通过键盘、鼠标等设备接收用户的输入，实现人机交互。</div>
          </div>
          <div class="card-source">来源: 为什么需要I/O操作？</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">应用</div>
          <div class="card-question">文档中提到了I/O操作在哪些场景下的应用，并将其比作了什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">应用</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档提到了三个应用场景：1. 文件操作：读取和写入文件，被比作“打开一本书或在书中写下新的篇章”。2. 网络通信：通过互联网与远程服务器通信，被比作“在数字世界中传递信件”。3. 设备互动：与打印机、摄像头等设备互动，被比作“在数字世界中与各种工具进行互动”。</div>
          </div>
          <div class="card-source">来源: I/O操作的奇妙之处</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">挑战</div>
          <div class="card-question">处理I/O操作时会面临哪两大挑战？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">挑战</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">处理I/O操作面临的两大挑战是：1. 速度不均：不同的I/O设备速度差异很大，需要采用平衡策略来处理。2. 错误处理：I/O操作可能遇到设备故障、文件不存在等错误，程序必须具备良好的错误处理机制。</div>
          </div>
          <div class="card-source">来源: I/O操作的挑战</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">异步I/O的“非阻塞”特性对程序执行有何益处？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">异步I/O的非阻塞特性允许程序在发起I/O操作后，不必等待其完成就可以继续执行其他任务。这可以显著提高程序的效率和响应能力，避免了因等待I/O而造成的性能瓶颈。</div>
          </div>
          <div class="card-source">来源: I/O操作的基本方式</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">I/O操作是如何实现数据的“持久化存储”的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">通过I/O操作，计算机能够将内存中的数据写入到硬盘等非易失性存储设备中。这样，即使计算机断电，数据也能被保存下来，实现了数据的持久化存储，文档中将其比喻为“把信息记录在一本书中”。</div>
          </div>
          <div class="card-source">来源: 为什么需要I/O操作？</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">同步I/O的“阻塞”特性具体指什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">同步I/O的“阻塞”特性指的是，当程序发起一个I/O请求时，它的执行流程会被暂停（阻塞），直到该I/O操作完全完成，程序才能恢复执行后续的指令。</div>
          </div>
          <div class="card-source">来源: I/O操作的基本方式</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">挑战</div>
          <div class="card-question">为什么在进行I/O操作时，必须考虑错误处理？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">挑战</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">因为I/O操作涉及与外部物理设备（如硬盘、网络）的交互，这些交互过程容易出现各种问题，例如设备突然故障、文件不存在、网络连接中断等。如果没有良好的错误处理机制，程序可能会因此而崩溃或产生不可预料的结果。</div>
          </div>
          <div class="card-source">来源: I/O操作的挑战</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
